package com.adee.java.druid;

import com.alibaba.druid.sql.ast.SQLStatement;
import com.alibaba.druid.sql.parser.SQLStatementParser;
import com.alibaba.druid.wall.WallProvider;
import com.alibaba.druid.wall.spi.MySqlWallProvider;

import java.util.ArrayList;
import java.util.List;

/**
 * 应用场景：
 * 1.怎样切割sql，注意不能通过字符，因为正常的sql里也有；
 * 2.像很多sql框架也有用到，比如数据库的备份恢复、自动执行等。
 */
public class WallTest {
    public static void main(String[] args) {
        MySqlWallProvider mySqlWallProvider = new MySqlWallProvider();
        SQLStatementParser parser = mySqlWallProvider.createParser("select @@transaction_isolation; ");
        parser.getLexer().setCommentHandler(WallProvider.WallCommentHandler.instance);
        parser.getLexer().setAllowComment(true);
        List<SQLStatement> list = new ArrayList<>();
        parser.parseStatementList(list);
        for (SQLStatement statement : list) {
            System.out.println(statement);
        }
    }
}
